package com.semanticweb.webapp.ontology;

public enum CIDOC {

	// Classes
    E2("E2.Temporal_Entity"),
    E3("E3.Condition_State"),
    E4("E4.Period"),
    E8("E8.Acquisition"),
    E11("E11.Modification"),
    E12("E12.Production"),
    E13("E13.Attribute_Assignment"),
	E22("E22.Man-Made_Object"),
	E29("E29.Design_or_Procedure"),
	E31("E31.Document"),
	E35("E35.Title"),
	E38("E38.Image"),
	E39("E39.Actor"),
	E41("E41.Appellation"),
	E42("E42.Identifier"),
	E44("E44.Place_Appellation"),
	E48("E48.Place_Name"),
	E50("E50.Date"),
	E52("E52.Time-Span"),
	E53("E53.Place"), 
	E54("E54.Dimension"),
	E55("E55.Type"),
	E57("E57.Material"),
	E58("E58.Measurement_Unit"),
	E60("E60.Number"),
	E62("E62.String"),
	E78("E78.Collection"),
	E79("E79.Part_Addition"),
	E82("E82.Actor_Appellation"),

	// Properties
	P1("P1F.is_identified_by"),
	P2("P2F.has_type"),
	P3("P3F.has_note"),
	P4("P4F.has_time-span"),
	P7("P7F.took_place_at"),
	P14("P14F.carried_out_by"),
	P21("P21F.had_general_purpose"),
	P24("P24F.transferred_title_of"),
	P31("P31F.has_modified"),
	P32("P32F.used_general_technique"),
	P33("P33F.used_specific_technique"),
	P43("P43F.has_dimension"),
	P44("P44F.has_condition"),
	P45("P45.consists_of"),
	P48("P48F.has_preferred_identifier"),
	P55("P55F.has_current_location"),
	P67("P67F.refers_to"),
	P78("P78F.is_identified_by"),
	P87("P87F.is_identified_by"),
	P89("P89F.falls_within"),
	P90("P90F.has_value"),
	P91("P91F.has_unit"),
	P102("P102F.has_title"),
	P108("P108F.has_produced"),
	P110("P110.augmented"),
	P111("P111F.added"),
	P131("P131F.is_identified_by"),
	P138("P138F.represents"),
	P140("P140F.assigned_attribute_to");

	private String value;

	private CIDOC(final String value) {
		this.value = value;
	}

	public String getValue() {
		return this.value;
	}

	public String getFullValue() {
		return Ont.NS + getValue();
	}

	public String queryValue() {
		return Ont.formatQueryURI(getValue());
	}

	@Override
	public String toString() {
		return getFullValue();
	}
}
